/*
 * switch.c
 *
 *  Created on: 2023年11月2日
 *      Author: Run
 */
#include "zf_common_headfile.h"
//-------------------------------------------------------------------------------------------------------------------
// 函数简介     将浮点数转换为二进制并写入数组中
// 参数说明     uint8类型数组，浮点数
// 返回参数     无
// 使用示例     Flaot_Hax_array(array[64],i);
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
void Flaot_Hax_array(uint8 *array,float i)
{
    *(float*)array = i;
}

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     平方函数
// 参数说明     float
// 返回参数     float
// 使用示例     squa(25.2);
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
float squa(float a)
{
    return a*a;
}

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     快速开根号
// 参数说明     float
// 返回参数     float
// 使用示例     invSqrt(25.2);
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
float invSqrt(float x)
{
    float halfx = 0.5f * x;
    float y = x;
    long i = *(long *)&y;
    i = 0x5f3759df - (i >> 1);
    y = *(float *)&i;
    y = y * (1.5f - (halfx * y * y));
    return y;
}
//-------------------------------------------------------------------------------------------------------------------
// 函数简介     限幅函数
// 参数说明     x变量参数 low低限幅 up高限幅
// 返回参数     int
// 使用示例     clip(x, 100, 10000);
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
int clip(int x, int low, int up) 
{
    return x > up ? up : x < low ? low : x;
}

//-------------------------------------------------------------------------------------------------------------------
// 函数简介     限幅函数
// 参数说明     x变量参数 low低限幅 up高限幅
// 返回参数     float
// 使用示例     fclip(x, 100, 10000);
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
float fclip(float x, float low, float up) 
{
    return x > up ? up : x < low ? low : x;
}


//-------------------------------------------------------------------------------------------------------------------
// 函数简介     希尔排序
// 参数说明     a数组 n数量
// 返回参数     null
// 使用示例     shellSort16(a,n);
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
void shellSort16(int16 a[],int n)
{
    int16 i,j,gap,temp;
    for(gap = n/2;gap>0;gap/=2){
        for(i=gap;i<n;i+=gap){
            temp = a[i];
            for(j = i-gap;j>=0&&a[j]>temp;j-=gap){
                a[j+gap] = a[j];
            }
            a[j+gap] = temp;
        }
    }
}